package com.wangsh.splider.system.service;

import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Service;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.wangsh.splider.common.pojo.ApiResponse;
import com.wangsh.splider.system.pojo.ASysClient;
import com.wangsh.splider.system.pojo.ASysCountry;
import com.wangsh.splider.system.pojo.ASysIp;
import com.wangsh.splider.system.pojo.ASysMailAccount;
import com.wangsh.splider.system.pojo.ASysProxy;
import com.wangsh.splider.system.pojo.ASysWebUrl;
import com.wangsh.splider.task.pojo.ATaskUsers;

/**
 * 订单操作的接口
 * @author TeaBig
 */
@Service("systemOperService")
public interface ISystemOperService
{
	/**
	 * 更新多条Country
	 * 
	 * @param demoCountry
	 * @return
	 */
	ApiResponse<ASysCountry> operUpdateBatchCountryService(Map<String, Object> condMap);

	/**
	     * 通过ip查询ip归属地   
	  *	~先查询数据库看看有没有
	  *	~如果没有,应该想办法保存;
	  *	~如果有ip定位信息需要查询淘宝 
	*/	
	ApiResponse<ASysIp> operFindIp(String ip);
	
	/**
	 * 根据国家查询一条ip代理
	 * 
	 * @param country 这是一个集合(可以根据status,id,countryId,ipId,ip)进行查询
	 * @return
	 */
	
	ApiResponse<ASysProxy> operFindOneSysProxyByCountry(Map<String,Object> condMap);
	
	/**
	 * 
	 * 根据国家或ip返回一个代理类
	 * 
	 * @param proxy 传一个ip或国家,
	 * */
	ASysProxy operSaveOneSysProxy(Map<String,Object>proxy);
	
	/**
	 * 读取代理类
	 * */
	ApiResponse<ASysProxy> operReadFileSavaSysProxy(String country);

	
	/**
	 * 发送邮件
	 * @param sysMailAccount 如果为null,系统会随机找一个账号发送
	 */
	ApiResponse<Object> operSendEmail(ASysMailAccount sysMailAccount,String email,String text,String subject);

	/**
	 * 发送多个邮件
	 * @param accountId 账户Id
	 * @param taskId 任务id
	 */
	void operSendMoreEmail(List<ATaskUsers> usersList,String taskId);
	
	/**
	 * 多线程发送
	 */
	boolean operUsersSendMailService(String taskId);
	/**
	 * 随机返回一条记录
	 */
	ApiResponse<ASysClient> operRtOneClient(Map<String,Object> condMap);

	/**
	 * 随机获取50条或一百条 请求头
	 * */
	JSONArray operOrderRead(Map<String, Object> condMap,ASysWebUrl sysWebUrl);
	
	/**
	 * 保存一条sysClient
	 * */
	ApiResponse<Object> operSaveClient(JSONObject clientJson);
	
	/**
	 * 获取最老的客户端根据attackTime和现在的时间 时间大于一定值就为禁用
	 * */
	void operJudgeClinetStatus();
	
	/**
	 * 获取一定量的最老的客户端根据attackTime和现在的时间 时间大于一定值就为禁用
	 * */
	void operJudgeClinetStatusList();

}
